package com.pxmeta.skill.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pxmeta.party.entity.vo.SearchUserVO;
import com.pxmeta.party.entity.vo.SkillVerifyExtraVO;
import com.pxmeta.skill.entity.UserSkill;
import com.pxmeta.party.entity.vo.UserSkillVO;
import com.pxmeta.skill.entity.vo.SkillPriceVO;
import com.pxmeta.user.entity.User;

import java.util.List;

public interface IUserSkillService extends IService<UserSkill> {

    /**
     * 声动连线审核
     * @param userId
     * @param desc
     */
    void submitVerify(Long userId,Integer type, String desc);

    /**
     * 获取列表
     * @param page
     * @param size
     * @return
     */
    List<UserSkillVO> getList(String username, Integer skillId, Integer page, Integer size, Integer type);


    List<SearchUserVO> searchUsers(String keyword, Integer page, Integer size);

    /**
     * 获取用户认证列表
     * @param userId
     * @return
     */
    List<UserSkill> getUserList(Long userId);

    /**
     * 获取用户认证列表
     * @param username
     * @return
     */
    List<UserSkill> getUserSkillList(Long currentUserId, String username);

    void skillVerify(Long userId, Integer skillId, String grade, List<String> imgList, String introduce, String voice, List<SkillVerifyExtraVO> extraList);

    /**
     * 获取用户
     * @param userId
     * @return
     */
    List<UserSkill> getUserSkillList(Long userId);


    /**
     * 关闭用户技能
     * @param userId
     * @param skillId
     */
    void closeUserSkill(Long userId, Integer skillId);


    /**
     * 开启用户技能
     * @param userId
     * @param skillId
     */
    void openUserSkill(Long userId, Integer skillId);

    /**
     * 获取用户技能
     * @param userId
     * @param skillId
     * @return
     */
    UserSkill getUserSkill(Long userId, Integer skillId);

    /**
     * 用户技能详情
     * @param userId
     * @param skillId
     * @return
     */
    UserSkillVO getUserSkillDetail(Long currentUserId, Long userId, Integer skillId);

    /**
     * 获取技能价格
     * @param userSkillId
     * @return
     */
    SkillPriceVO getPrice(Long currentUserId,Long userSkillId,Integer count);

    /**
     * 判断是否满足每日一币
     * @param userSkillId
     * @param buyerId
     * @return
     */
    boolean checkMeetOneCoinFeatures(Long userSkillId, Long buyerId);

    List<User> sendAccompanyUsers(String partyId, Integer skillId, Integer sex,String remark,Long dispatchId);


    /**
     * 更新地理位置
     * @param userId
     * @param addressStr
     */
    void updateAddress(Long userId, String addressStr);

    /**
     * 检查是否是陪陪
     * @param userId
     * @return
     */
    Boolean checkIsAccompany(Long userId);


    /**
     * 审核用户技能
     * @param userId
     */
    void verifyUserSkill(Long userId,Long userSkillId);
}
